1. Field of the Invention
The present invention relates generally to software application and, in particular, to application level speculative processing.
2. Description of the Related Art
Many applications are event-driven applications such that an event is raised asynchronously and, based on the response to that event, a series of operations are performed. There may be multiple responses to a single event, where each response initiates a different series of operations. One example of an event-driven application is a computer modeling software application that allows a user to create complex three-dimensional (3-D) models of objects.
While some operations initiated by an event response may be executed by a computing device quickly, oftentimes operations initiated by software applications require several processing cycles. When performing workflows that involve a large volume of event responses and the subsequent execution of operations, having to wait several processing cycles for each set of operations in the workflow to complete execution can be extremely tedious and time consuming. Such wait times are highly undesirable and may result in sub-optimal actions being performed in order to avoid having to spend significant amounts of time when waiting for execution to complete.
One solution to the above-mentioned problem is the speculative execution of code. However, to enable such speculative execution, the code needs to be extremely carefully designed to follow pre-defined data models that support speculative execution. Such a design process is not only difficult and increases development time but also not very pervasive. Therefore, many software applications exist today that are not built to support speculative execution.
As the foregoing illustrates, what is needed in the art is a mechanism for reducing the number of processing cycles needed to execute operations initiated by an application in response to an event.